package com.hsnn.medstgmini.base.std.service.impl;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hsnn.medstgmini.base.std.dao.StdDrugQualitySpecDao;
import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpec;
import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpecLog;
import com.hsnn.medstgmini.base.std.service.StdDrugQualitySpecManager;
import com.hsnn.medstgmini.util.Pagination;

@Service
public class StdDrugQualitySpecManagerImpl implements StdDrugQualitySpecManager {
	
	@Autowired
	private StdDrugQualitySpecDao stdDrugQualitySpecDao;
	
	public int saveOrAddDrugSpec(StdDrugQualitySpec stdDrugQualitySpec){
		return stdDrugQualitySpecDao.saveOrAddDrugSpec(stdDrugQualitySpec);
		
	}
	
	

	/**
	 *@category 查询品规库列表
	 *@author zhouqi
	 *@date 2015年8月18日10:34:51
	 *@param Pagination
	 *@return Pagination
	 */
	public Pagination getStdDrugQualitySpecList(Pagination page){
		return stdDrugQualitySpecDao.getStdDrugQualitySpecList(page);
	}
	
	/**
	 *@category 修改或添加药品品规
	 *@author zhouqi
	 *@date 2015年8月18日10:34:56
	 *@param StdDrugQualitySpec
	 *@return Boolean 保存成功返回true，失败返回false
	 */
	public void saveOrAddDrugQualitySpec(Pagination page){
		this.stdDrugQualitySpecDao.saveOrAddDrugQualitySpec(page);
		
	}
	
	/**
	 *@category 根据id查找药品品规
	 *@author zhouqi
	 *@date 2015年8月18日10:35:01
	 *@param String id
	 *@return StdDrugQualitySpec
	 */
	public StdDrugQualitySpec getDrugQualitySpecById(String id){
		return stdDrugQualitySpecDao.getDrugQualitySpecById(id);
	}
	
	/**
	 *@category 改变药品品规状态
	 *@author zhouqi
	 *@date 2015年8月18日10:35:07
	 *@param StdDrugQualitySpec
	 *@return Boolean 保存成功返回true，失败返回false
	 */
	public Boolean changDrugQualitySpecStatus(StdDrugQualitySpec stdDrugQualitySpec){
		stdDrugQualitySpecDao.changDrugQualitySpecStatus(stdDrugQualitySpec);
		return true;
	}
	
	/**
	 *@category 获取修改前后状态对比
	 *@author zhouqi
	 *@date 2015年8月18日10:35:11
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	public List<StdDrugQualitySpecLog> getCompareStatus(String updDatetime,String id){
		return stdDrugQualitySpecDao.getCompareStatus(updDatetime,id);
	}
	
	/**
	 *@category 获取日志列表展示页面
	 *@author zhouqi
	 *@date 2015年8月18日10:35:17
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	@SuppressWarnings("unchecked")
	public Pagination getStdDrugQualitySpecLogList(Pagination page,StdDrugQualitySpec stdDrugQualitySpec){
		page = stdDrugQualitySpecDao.getStdDrugQualitySpecLogList(page, stdDrugQualitySpec);
		List<Map<String,Object>> list = (List<Map<String,Object>>)page.getRows();
		for(int i = 0;i<list.size();i++){
			String detail = list.get(i).get("detail")==null?"":list.get(i).get("detail").toString();
			if(StringUtils.isNotBlank(detail)){
				if(detail.toString().indexOf(",")<0){
					detail = "新增数据:<br/>".concat(detail.replaceAll(";", "<br/>"));
					
				}else{
					detail= detail.replaceAll(":", "由");
					detail= detail.replaceAll(",", "变为");
					detail= detail.replaceAll(";", "<br/>");
				}
			}
			list.get(i).put("detail", detail);
		}
		page.setRows(list);	
		return page;
	}
	
	/**
	 *@category 保存或新增品规库日志
	 *@author zhouqi
	 *@date 2015年8月18日10:35:22
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	public Boolean saveOrAddDrugQualitySpecLog(StdDrugQualitySpecLog stdDrugQualitySpecLog){
		stdDrugQualitySpecDao.saveOrAddDrugQualitySpecLog(stdDrugQualitySpecLog);
		return true;
	}
	
	/**
	 *@category 根据Id查找品规日志
	 *@author zhouqi
	 *@date 2015年8月18日10:35:26
	 *@param void
	 *@return List<StdDrugQualitySpec> 
	 */
	public StdDrugQualitySpec getStdDrugQualitySpecLogById(String logId){
		stdDrugQualitySpecDao.getStdDrugQualitySpecLogById(logId);
		return null;
	}

	/**
	 * 品规库维护记录详情
	 * @param page
	 * @return
	 */
	@Override
	public List<Map<String, Object>> getStdDrugQualitySpecLogDetail(StdDrugQualitySpecLog stdDrugQualitySpecLog) {
		return stdDrugQualitySpecDao.getStdDrugQualitySpecLogDetail(stdDrugQualitySpecLog);
	}


	
	
	/**
	 * 
	 * @category 品规库 新增编辑  剂型 弹窗
	 * @author 言科
	 * @date 2015年9月25日 String
	 */
	@Override
	public Pagination getStdDrugQualitySpecDrugForm(Pagination page) {
		return stdDrugQualitySpecDao.getStdDrugQualitySpecDrugForm(page);
	}

	
	/**
	 * 
	 * @category 品规库 新增编辑  规格 弹窗
	 * @author 言科
	 * @date 2015年9月25日 String
	 */
	@Override
	public Pagination getStdDrugQualitySpecDrugSpec(Pagination page) {
		return stdDrugQualitySpecDao.getStdDrugQualitySpecDrugSpec(page);
	}
	
	/**
	 * @category 校验编码的重复性
	 * @author zhouqi
	 * @date 2015年9月25日 
	 */
	@Override
	public List<StdDrugQualitySpec> validRep(StdDrugQualitySpec stdDrugQualitySpec){
		List<StdDrugQualitySpec> list = stdDrugQualitySpecDao.validRep(stdDrugQualitySpec);
		return list;
	}
	
	public void exportExcel(Pagination page,OutputStream os){
		stdDrugQualitySpecDao.exportExcel(page,os);
	
	}
	public List<Map<String, Object>> getQualityspec(String drugName, String formName, String specName){
		return stdDrugQualitySpecDao.getQualityspec(drugName, formName, specName);
	}

}
